load("//bazel:tachyon_cc.bzl", "tachyon_cc_binary", "tachyon_cc_library")

tachyon_cc_library(
    name = "msm_config",
    testonly = True,
    srcs = ["msm_config.cc"],
    hdrs = ["msm_config.h"],
    deps = [
        "//benchmark:config",
        "//tachyon/base/console",
        "//tachyon/base/containers:container_util",
        "//tachyon/base/ranges:algorithm",
        "//tachyon/math/elliptic_curves/msm/test:variable_base_msm_test_set",
        "@com_google_absl//absl/strings",
    ],
)

tachyon_cc_library(
    name = "msm_runner",
    hdrs = ["msm_runner.h"],
    deps = [
        "//benchmark:simple_reporter",
        "//tachyon/base/time",
        "//tachyon/c/math/elliptic_curves:point_traits_forward",
        "@com_google_absl//absl/types:span",
    ],
)

tachyon_cc_binary(
    name = "msm_benchmark",
    testonly = True,
    srcs = ["msm_benchmark.cc"],
    deps = [
        ":msm_config",
        ":msm_runner",
        "//benchmark:simple_reporter",
        "//benchmark/msm/arkworks",
        "//benchmark/msm/bellman",
        "//benchmark/msm/halo2",
        "//tachyon/base:profiler",
        "//tachyon/c/math/elliptic_curves/bn/bn254:msm",
    ],
)

tachyon_cc_binary(
    name = "msm_benchmark_gpu",
    testonly = True,
    srcs = ["msm_benchmark_gpu.cc"],
    deps = [
        ":msm_config",
        ":msm_runner",
        "//benchmark:simple_reporter",
        "//tachyon/base:profiler",
        "//tachyon/c/math/elliptic_curves/bn/bn254:msm",
        "//tachyon/c/math/elliptic_curves/bn/bn254:msm_gpu",
    ],
)
